package com.orange.wwwapi.pojo.req.carpark.keytop;

import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

@Getter
@Setter
public class PayParkingFeeReq extends KeyTopBaseReq {

    /**
     * 车场账单号，不允许为空 账单号只允许使用一次,已支付的订单不能再次使用
     */
    private String orderNo;

    /**
     * 应付金额
     */
    private Integer payableAmount;

    /**
     * 缴费时间，yyyy-mm-dd hh:mm:ss
     */
    private String payTime;

    /**
     * 支付金额(不包含减免部分),单位为分,不允许为空
     */
    private Integer amount;

    /**
     * 收费终端，详见参数枚举1.6.4
     */
    private Integer payType;

    /**
     * 付款方式，详见参数枚举 1.6.3(针对amount的支付方式)
     */
    private Integer payMethod;

    /**
     * 减免总金额(单位 分)
     */
    private Integer freeMoney;

    /**
     * 减免总时长(单位 秒)
     */
    private Integer freeTime;

    /**
     * 车辆是否离场(6.x系统无感支付及后付费用必须传.6.x支持、5.x不支持):1、表示车辆已经离场
     */
    private Integer isCarLeave;

    private String freeDetail;

    /**
     * 商户订单号 (6x必填)主要用与后期本地数据和支付平台直接对账使用.
     */
    private String outOrderNo;

    /**
     * 支付扩展信息，json对象字符串
     */
    private PaymentExt paymentExt;

    /**
     * 是否无感支付，5.x无感支付时，需要传此参数，且值必须为1
     */
    private List<String> isNoSense;

    @Getter
    @Setter
    @Accessors(chain = true)
    public static class FreeDetail implements Serializable {

        /**
         * 减免金额 单位:分
         */
        private Integer money;

        /**
         * 减免时间 单位:秒
         */
        private Integer time;

        /**
         * 会员id、抵扣券编号、购物小票号
         */
        private String code;

        /**
         * 抵扣来源 :0:积分抵扣(对应支付方式1013)1:抵扣券(对应支付方式1010)2:购物小票(对应支付方式1014),3:会员减免(对应支付方式1012)等
         */
        private Integer type;

        /**
         * 减免项目名称(第三方自定义减免名称)
         */
        private String freeName;
    }

    @Getter
    @Setter
    public static class PaymentExt implements Serializable {

        /**
         * 设备编码
         */
        private String deviceNo;

        /**
         * 速停车支付标识
         */
        private String paymentTag;
    }
}
